import  os
import sys
import pathlib
import pandas as pd
root_path=pathlib.Path(__file__).resolve().parent.parent.parent
sys.path.append(str(root_path))
# 脚本的环境， 在子目录下，一定要添加上面， 这样才能找到兄弟目录下的文件。
# print(root_path)
from qmt_data.tdxmoo_data import tdxmoo_data
from strategy_models.stratege_common_redis import CStrategy_common
from qmt_tool.confile_tool import get_config_trade_file

from qmt_tool.doris_tool import DbTool

from datetime import datetime,time
start_time = time(9, 26, 10)
end_time = time(9, 29, 40)

def is_in_time_range():
    now_time = datetime.now().time()
    return start_time <= now_time <= end_time
def get_tdx_result_block_todb(block_name,  strategy_name, buy_inform,table_name='stock_signal_tdx_jhjj'):
    ''
    db_tool = DbTool()
    tdx_data = tdxmoo_data()
    tdx_list=tdx_data.get_define_block_from_tdxfile(block_name=block_name)
    if tdx_list is None :
        print('板块内容为空，或者没有取到板块')
        return
    if tdx_list[0]=='':
        print('板块内容为空')
        return
    file_name=block_name+'.parquet'
    try:
        pre_list=pd.read_parquet(path=file_name)['symbol'].tolist() #读取，如果没有就报错，进入新文件板块

        if sorted(pre_list)==sorted(tdx_list):
            print('没有更新')
            return
        else:
            to_save_pd=pd.DataFrame()
            for code in tdx_list:
                if code not in pre_list:
                    print('有新的股票加入')
                    new_pd=pd.DataFrame([code],columns=['symbol'])
                    new_pd['strategy_name'] = strategy_name
                    new_pd['trade_date'] = datetime.today().strftime('%Y%m%d')
                    new_pd['data_time'] = datetime.today().strftime('%Y-%m-%d %H:%M:%S')
                    new_pd['buy_inform'] = buy_inform
                    to_save_pd=pd.concat([to_save_pd,new_pd])
            dbengine = db_tool.get_dbengine_quant_result()
            db_tool.save_to_mysql_append(to_save_pd, dbengine, table_name=table_name)
            pd.DataFrame(tdx_list,columns=['symbol']).to_parquet(path=file_name,index=False)  #再次写入
    except Exception as e:
        print(e)
        pre_list=pd.DataFrame(columns=['symbol'])
        df=pd.DataFrame(tdx_list,columns=['symbol'])
        df['strategy_name']=strategy_name
        df['trade_date']=datetime.today().strftime('%Y%m%d')
        df['data_time']=datetime.today().strftime('%Y-%m-%d %H:%M:%S')
        df.to_parquet(path=file_name,index=False)
        df['buy_inform']=buy_inform


        dbengine=db_tool.get_dbengine_quant_result()
        db_tool.save_to_mysql_append(df,dbengine,table_name=table_name)


if __name__ == '__main__':

  while True:
      if is_in_time_range():
        print('开始')
        block_name='出-超级20cm'
        strategy_name='超级20cm'
        buy_inform='创业板开在昨日收盘之上，趋势向上非常强势，可能带来超额收益,不要因为今日失败懊恼，明天可能反包'
        table_name='stock_signal_tdx_jhjj'
        get_tdx_result_block_todb(block_name,strategy_name,buy_inform,table_name)

        block_name='出-首板优先'
        strategy_name='首板优先'
        buy_inform='首板高开，要防止左边压力，还要注意炸板后的开在压力区，也会骗高开，不要因为今日失败懊恼，明天可能反包'
        get_tdx_result_block_todb(block_name,strategy_name,buy_inform,table_name)

        block_name='出-宽松首板'
        strategy_name='宽松首板'
        buy_inform='首板高开，要防止左边压力，还要注意炸板后的开在压力区，也会骗高开，不要因为今日失败懊恼，明天可能反包'

        get_tdx_result_block_todb(block_name,strategy_name,buy_inform,table_name)

        block_name='出-接力'
        strategy_name='接力'
        buy_inform='1进2策略，重在复盘，知道当下热点，非常具有节奏型，一段时间全对，一段时间全错，不要因为今日失败懊恼，明天可能反包'
        get_tdx_result_block_todb(block_name,strategy_name,buy_inform,table_name)

        block_name='出-接力优先'
        strategy_name='接力优先'
        buy_inform='1进2策略，重在复盘，知道当下热点，非常具有节奏型，一段时间全对，一段时间全错，不要因为今日失败懊恼，明天可能反包'
        get_tdx_result_block_todb(block_name,strategy_name,buy_inform,table_name)

        block_name='出-宽松接力'
        strategy_name='宽松接力'
        buy_inform='1进2策略，重在复盘，知道当下热点，非常具有节奏型，一段时间全对，一段时间全错，不要因为今日失败懊恼，明天可能反包'
        get_tdx_result_block_todb(block_name,strategy_name,buy_inform,table_name)
      else:
        print('不在执行时间范围内')
        break
